To Monads And Beyond - Intro To Category Theory For Programmers